package cc.yugu.yhdw.webserver.persistence.hdw;

import cc.yugu.yhdw.common.domain.hdw.Cabinet;
import cc.yugu.yhdw.common.domain.hdw.CabinetInfo;
import cc.yugu.yhdw.common.persistence.MasterMapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 换电柜信息
 *
 * @Date:Created in 2018/6/30 11:52
 * @Author:
 * @Modified By: zjn 2018/6/30 11:52
 */
public interface CabinetMapper extends MasterMapper {
    /**
    * 查询
    *
    * @Param: [property, value]
    * @Return: java.lang.String
    * @Author By: zjn 2018/6/30  11:52
    */
    public String hasRecordByProperty(@Param("property") String property, @Param("value") Object value);
    /**
    * 根据主键查询表hdw_cabinet
    *
    * @Param: [id]
    * @Return: cc.yugu.yhdw.common.domain.hdw.Cabinet
    * @Author By: zjn 2018/6/30  11:54
    */
    public Cabinet find(String id);
    /**
    * 按条件查询 主键和登陆者 名称
    *
    * @Param: [search]
    * @Return: java.util.List<cc.yugu.yhdw.common.domain.hdw.Cabinet>
    * @Author By: zjn 2018/6/30  11:54
    */
    public List<Cabinet> findByArea(Cabinet search);
    /**
    * 根据 在线、启用标识 查询主键
    *
    * @Param: []
    * @Return: java.util.List<java.lang.String>
    * @Author By: zjn 2018/6/30  11:55
    */
    public List<String> findAll();
    /**
    * 根据 在线、启用标识、运营商id 查询主键
    *
    * @Param: [agentId]
    * @Return: java.util.List<java.lang.String>
    * @Author By: zjn 2018/6/30  11:55
    */
    public List<String> findByAgent(@Param("agentId") Integer agentId);
    /**
    * 通过左外连接查询两个表 hdw_cabinet、hdw_cabinet_strategy ，按条件查询
    *
    * @Param: [search]
    * @Return: int
    * @Author By: zjn 2018/6/30  11:55
    */
    public int findPageCount(Cabinet search);
    /**
    * 根据主键查询表hdw_cabinet ，返回行数
    *
    * @Param: [id]
    * @Return: int
    * @Author By: zjn 2018/6/30  11:55
    */
    public int findUnique(String id);
    /**
    * 分页查询，按条件查询表hdw_cabinet ，并将查询结果按照主键降序排列
    *
    * @Param: [search]
    * @Return: java.util.List<cc.yugu.yhdw.common.domain.hdw.Cabinet>
    * @Author By: zjn 2018/6/30  11:55
    */
    public List<Cabinet> findPageResult(Cabinet search);
    /**
    * 插入
    *
    * @Param: [entity]
    * @Return: int
    * @Author By: zjn 2018/6/30  11:55
    */
    public int insert(Cabinet entity);
    /**
    * 根据主键更新表
    *
    * @Param: [entity]
    * @Return: int
    * @Author By: zjn 2018/6/30  11:55
    */
    public int updateBasic(Cabinet entity);
    /**
    * 按条件查询表hdw_exchange_order ，并将查询结果按照主键降序排列
    *
    * @Param: [date, id]
    * @Return: java.util.List<java.lang.String>
    * @Author By: zjn 2018/6/30  11:55
    */
    public List<String> findUsageLog(@Param("date") Date date, @Param("id") String id);
    /**
    * 按条件查询表hdw_exchange_order ，查询创建时间，并按照创建时间分组
    *
    * @Param: [id]
    * @Return: java.util.List<java.lang.String>
    * @Author By: zjn 2018/6/30  11:55
    */
    public List<String> findUsageLogCount(@Param("id") String id);
    /**
    * 按条件更新表hdw_cabinet ，更新启用标识
    *
    * @Param: [agencyId, agentId, activeFlag]
    * @Return: int
    * @Author By: zjn 2018/6/30  11:55
    */
    public int disable(@Param("agencyId") Integer agencyId, @Param("agentId") Integer agentId, @Param("activeFlag") int activeFlag);
    /**
    * 根据主键更新
    *
    * @Param: [entity]
    * @Return: int
    * @Author By: zjn 2018/6/30  11:55
    */
    public int updateLocation(Cabinet entity);
    /**
    * 根据主键更新图片路径
    *
    * @Param: [entity]
    * @Return: int
    * @Author By: zjn 2018/6/30  11:55
    */
    public int updateImage(Cabinet entity);
    /**
    * 更新温度
    *
    * @Param: [cabinetId, fst, fot, pt, rpt]
    * @Return: int
    * @Author By: zjn 2018/6/30  11:55
    */
    public int updateTemperature(@Param("cabinetId") String[] cabinetId, @Param("fst") byte fst, @Param("fot") byte fot, @Param("pt") byte pt, @Param("rpt") byte rpt);
    /**
    * 根据主键删除
    *
    * @Param: [id]
    * @Return: int
    * @Author By: zjn 2018/6/30  11:55
    */
    public int delete(String id);
    /**
    * 根据运营商id删除
    *
    * @Param: [id]
    * @Return: int
    * @Author By: zjn 2018/6/30  11:55
    */
    public int deleteByAgent(int id);
    /**
    * 根据代理商id删除
    *
    * @Param: [id]
    * @Return: int
    * @Author By: zjn 2018/6/30  11:55
    */
    public int deleteByAgency(int id);
    /**
     * 柜机分布图查询电池信息展示
     * @Param []
     * @Return java.util.List<java.util.Map<java.lang.String,java.lang.Double>>
     * @Author zxj 2018/8/28
     */
    public List<Map<String, Double>> findAllToMap();
}
